home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
YERK
/
SUPPLEME
/
UNSUPPOR
/
OPTIONAL
/
FOURTONE
< prev
next >
Wrap
Text File
|
1986-02-08
|
2KB
|
95 lines
\ FourTone - Four Tone synthesizer driver
\ written June 23 1985 by John Papiewski
\ v 1.1 July 9 Fix Bugs !!! add no-wait (asynchonous) code
\ must first load: Drvr & Struct1
:Class FourTone <Super PBDrvr
Int duration
Var snd1rate
Var snd1phase
Var snd2rate
Var snd2phase
Var snd3rate
Var snd3phase
Var snd4rate
Var snd4phase
Var snd1wave
Var snd2wave
Var snd3wave
Var snd4wave
Int FTRMode
Var SndPtr
:M OpenSound: -4 Put: IORefnum Put: IOcomp 6 put: IOReq
Abs: FTRMode Put: IOBuffer
" .Sound" Name: Super open: Super
;M
:M SetPitch: { Tone1 Tone2 Tone3 Tone4 -- }
Tone1 Put: Snd1Rate
Tone2 Put: Snd2Rate
Tone3 Put: Snd3Rate
Tone4 Put: Snd4Rate
;M
:M SetDur: { Dur -- } \ Set duration in ticks (60/second)
dur Put: duration 10 Put: snd1phase 10 Put: snd2phase
10 Put: snd3phase 10 Put: snd4phase
;M
:M SetWave: { Wave1 Wave2 Wave3 Wave4 -- } \ Assign waveform arrays to each
Wave1 Put: Snd1wave Wave2 Put: Snd2wave \ voice
Wave3 Put: Snd3wave Wave4 Put: Snd3wave
;M
:M StartSnd: \ regular driver
Abs: Duration Put: SndPtr
1 Put: FtrMode \ -1 = Square wave, 1 = Four-Tone, 0 = Free-form
Addr: FTRmode 6 Write: Self
drop
;M
:M NWStartSnd: { Proc -- } \ no-wait (asynchonous) driver
Abs: Duration Put: SndPtr
1 Put: FtrMode \ -1 = Square wave, 1 = Four-Tone, 0 = Free-form
Proc Addr: FTRmode 6 WriteNW: Self
drop
;M
;Class
:CLass WaveForm <Super Barray \ Describe the waveform structure here
:M SawInit: 255 0 do i i To: Self loop ;M \ fill array with sawtooth
:M Squinit: Clear: Self 127 0 Do 255 i To: self loop ;M \ Square Wave
:M TriInit: 63 0 Do 127 i 2* + i TO: Self Loop \ Triangle
191 64 Do 383 i -2 * + i To: Self Loop
255 192 Do i 192 - 2* i To: Self Loop
;M
:M FBWave: Abs: Self 4 + ;M
;Class
\ Here's an example :
0 value FTDone
:Proc FourDone 1 -> FTdone ;Proc \ Used to tell when no-wait write is done
256 WaveForm Sawtooth
256 WaveForm Triangle
256 WaveForm Square
SawInit: Sawtooth
SquInit: Square
TriInit: Triangle
FourTone Buzz
OpenSound: Buzz
FbWave: Triangle FBWave: Square Fbwave: Sawtooth dup SetWave: Buzz
cr cr
." Four-Tone Sound Demo"
: Buzzarre
250000 50000 DO
5 SetDur: Buzz
i 3000 i + 1000 i + 0 SetPitch: Buzz
StartSnd: Buzz
1000 +Loop
;
Buzzarre